Open source relates to computer source code that is publicly available and may be freely accessed and used by programmers in developing code. Open source may be provided as binary files or libraries to be linked with a user's' project, as code files to be compiled with a user's project, as code snippets to be added and optionally edited by a user as part of a file, as any other format, or in any combination thereof.
Open source may be used for a multiplicity of reasons, such as but not limited to: saving programming and debugging time and effort by obtaining a functional verified unit; porting or programming code to an environment in which the user has insufficient experience or knowledge; adding generic options such as graphic support, printing, or the like, or other purposes. The ease of obtaining such code on the Internet has greatly increased the popularity of its usage.
Despite the many advantages, source code may also carry hazards. One such danger may relate to the need to trust code received from an external source. Such code may contain bugs, security hazards or vulnerabilities, time or space inefficiencies, or even viruses, Trojan horses, or the like.
Another problem in using open source relates to the licenses which may be associated with any open source unit. Any such license may incur specific limitations or requirements on a user or a user's project developed using the open source.
Some licenses may require copyright and notification of the license. Others may require that if a user modified the used open source, for example fixed a bug, the user shares the modified version with other users in the same manner as the original source code was shared. Further licenses may require sharing the users' code developed with the open source with other users. The extent for which sharing is required may vary between files linked with files containing open source, and the whole user project. Further requirements may even have implications on the user's clients which may use the project developed with open source.
Open source may also pose legal limitations, such as limitations on filing patent applications associated with material from the open source, the inability to sue the open source developer or distributor if it does not meet expectations, or the like.
Once the requirements associated with using an open source are known, a user may decide whether it is acceptable for him or her to comply with the requirements, take the risks, and use the open source.
However, situations exist in which it is unknown whether a program was developed using open source or not. Such situations may occur, for example, when a programming project is outsourced to an external entity, when a programmer left the company and did not update his colleagues, in large companies possibly employing program development teams at multiple sites, or the like.
Another type of situations is when a user obtains an executable and does not know whether open source was used in development of the executable. This is particularly true when the executable is an ANDROID Application Package (APK) executed by a mobile device running the ANDROID operating system.